package com.zmn.plat.services.interfaces.orderconfig.distribute;

import com.zmn.plat.common.dto.orderconfig.distribute.RobOrderDIO;
import com.zmn.plat.model.entity.orderconfig.distribute.*;

import java.util.List;

/**
 * 描述:抢单参数平台配置业务处理接口
 *
 * @param
 * @author tanlei
 * @return
 * @since 2021/7/12 11:13
 */
public interface RobOrderConfigService {

    /**
     * 新增抢单配置数据
     *
     * @param robOrderConfigInfo
     * @return
     */
    Integer insert(RobOrderConfigInfo robOrderConfigInfo);

    /**
     * 描述: 批量新增数据
     *
     * @param robOrderRelationList 待新增数据集合
     * @return java.lang.Integer 成功个数
     * @author tanlei
     * @since  2021-07-13 13:57:35
     */
    Integer insertBatch(List<RobOrderRelation> robOrderRelationList);

    /**
     * 描述: 批量新增数据
     *
     * @param robOrderRelationProductList 待新增数据集合
     * @return java.lang.Integer 成功个数
     * @author tanlei
     * @since  2021-07-12 09:57:35
     */
    Integer insertBatchProduct(List<RobOrderRelationProduct> robOrderRelationProductList);

    /**
     * 描述: 新增数据
     *
     * @param robOrderRelationProduct 待新增数据
     * @return java.lang.Integer
     * @author tanlei
     * @since  2021-07-14 19:47:31
     **/
    Integer insertRelationProductData(RobOrderRelationProduct robOrderRelationProduct);

    /**
     * 描述: 新增数据
     *
     * @param robOrderRelation 待新增数据
     * @return java.lang.Integer
     * @author tanlei
     * @since  2021-07-14 19:47:31
     **/
    Integer insertRelationData(RobOrderRelation robOrderRelation);

    /**
     * 更新
     *
     * @param robOrderConfigInfo
     * @return
     */
    Integer updateByKey(RobOrderConfigInfo robOrderConfigInfo);


    /**
     * 编辑启用停用状态
     *
     * @param updateStatusQuery
     * @return
     */
    Integer updateStatus(UpdateStatusQuery updateStatusQuery);

    /**
     * 更新关联表数据
     *
     * @param robOrderRelation
     * @return
     */
    Integer updateRelationDataByKey(RobOrderRelation robOrderRelation);

    /**
     * 描述: 批量修改数据
     *
     * @param robOrderRelationProductList 数据集合
     * @return java.lang.Integer 成功个数
     * @author tanlei
     * @since  2021-07-014 19:57:35
     */
    Integer updateBatchProductByKey(List<RobOrderRelationProduct> robOrderRelationProductList);

    /**
     * 描述: 批量修改数据
     *
     * @param robOrderRelationList 数据集合
     * @return java.lang.Integer
     * @author tanlei
     * @since  2021-07-14 19:57:35
     */
    Integer updateBatchByKey(List<RobOrderRelation> robOrderRelationList);

    /**
     * 描述: 查询是否城市下抢单规则数量
     *
     * @param query
     * @return java.lang.Integer 成功个数
     * @author tanlei
     * @since  2021-07-13 09:57:35
     */
    Integer countByQuery(RobOrderConfigInfoQuery query);

    /**
     * 描述: 按条件查询数据
     *
     * @param query 查询对象
     * @return RobOrderRelation
     * @author tanlei
     * @since 2021-07-014 09:57:35
     **/
    List<RobOrderRelation> listByQuery(RobOrderRelationQuery query);

    /**
     * 描述: 按条件查询数据
     *
     * @param query 查询对象
     * @return RobOrderRelationProduct
     * @author tanlei
     * @since 2021-07-014 09:57:35
     **/
    List<RobOrderRelationProduct> listProductByQuery(RobOrderRelationProductQuery query);

    /**
     * 描述: 获取配置对象
     *
     * @param configId 查询对象
     * @return RobOrderConfigInfo
     * @author tanlei
     * @since 2021-07-14 15:57:35
     **/
    RobOrderConfigInfo findByKey(Integer configId);

    /**
     * 描述: 删除关联表数据
     *
     * @param configId
     * @author tanlei
     * @since 2021-07-14 15:57:35
     **/
    void deleteByConfigId(Integer configId);

    /**
     * 描述: 删除关联产品表数据
     *
     * @param relationId
     * @author tanlei
     * @since 2021-07-14 15:57:35
     **/
    void deleteByRelationId(Integer relationId);

    /**
     * 描述: 查询抢单配置表
     *
     * @param query
     * @author tanlei
     * @since 2021-07-14 15:57:35
     **/
    RobOrderConfigInfo findRobOrderConfigByQuery(RobOrderDIO query);

    /**
     * 描述: 查询服务商抢单配置表
     *
     * @param query
     * @author tanlei
     * @since 2021-07-14 15:57:35
     **/
    RobOrderConfigInfo findCompanyRobOrderConfigByQuery(RobOrderDIO query);

    /**
     * 描述: 查询抢单配置
     *
     * @param configIds
     * @return  List<RobOrderConfigInfo>
     * @author tanlei
     * @since 2021/07/27 09:52
     **/
     List<RobOrderConfigInfo> listConfigInfoByConfigIds(List<Integer> configIds);


}
